package io.gitee.sfch.chunmi.util;

import com.mybatisflex.core.paginate.Page;
import io.gitee.sfch.chunmi.entity.Pageable;
import io.gitee.sfch.chunmi.entity.Pagination;
import io.gitee.sfch.chunmi.entity.PaginationImpl;

/**
 * Mybatis Flex 分页工具
 */
public abstract class PageUtil {

    /**
     * 将分页参数转换为Mybatis Flex专用参数
     *
     * @param pageable 分页参数
     * @param <T> 返回数据类型
     */
    public static <T> Page<T> from(Pageable pageable) {
        Page<T> page = new Page<>();
        page.setPageNumber(pageable.getPageNumber());
        page.setPageSize(pageable.getPageSize());
        return page;
    }

    /**
     * 将分页结果转换为{@link Pagination}响应接口
     *
     * @param result Mybatis Flex 分页结果
     * @param <T> 返回数据类型
     */
    public static <T> Pagination<T> from(Page<T> result, Pageable pageable) {
        return PaginationImpl.of(result.getRecords(), result.getTotalRow(), pageable);
    }
}
